
02.02.2018, 12:24
|
Аспирант
|
|
Регистрация: 27.09.2015
Сообщений: 94
|
|
Как отправить из Ajax одну переменную и получить ответ в Ajax виде массива?
Доброе время суток.
Подскажите, как отправить из Ajax одну переменную а именно имя домена и получить ответ в Ajax виде массива который должен с генерировать таблицу с данными от сервера.
вот форма
<form method="post">
<table>
<tr><td>Домен:</td><td><input id="out_domain" type="text" name="domain" value="juntik.ru"></td></tr>
</table>
<div class="button_records"><input type="submit" name="getRrRecords" value="Получить записи"></div>
</form>
ajax
$('[name="getRrRecords"]').click(function(){
// e.preventDefault();
ajaxGetRrRecords();
});
function ajaxGetRrRecords(){
var domain = $('#out_domain').val();
$.ajax({
type: "POST",
cache: false,
url: "getrerecords.php",
data:{domain:domain}, // Передаем обработчику имя домена
dataType: "json",
success: function(data){
alert( "Прибыли данные: " + data );
console.log(data);
}
});
}
Обработчик php
<?
//ini_set('display_errors',1);
if(isset($_POST['domain']))
{
include '../reg/soap_action_getrrrecords.php'; //Подключение по API к SOAP-сервер
try {
//вызываем функцию получения списка RR записей подомену
$getrrrecord = $client->getRrRecords($_POST['domain']);
}
catch (SoapFault $fault)
{
//Неудалось вызвать функциюget RrRecords на сервере или она отработала неправильно.
echo '<div class="forma"><b>Невозможно выполнить функцию четения записи DNS</b></div>';
//echo $format1."Couldntexecute getRrRecords".$format2;
//echo "Fault code: ".$fault->faultcode."<br>Fault message: ".$fault->faultstring;
logout();
exit();
}
if ($getrrrecord->status->code != '1')
{
//функция отработала, возникла обработанная ошибка с идентификатором $getrrrecord->status->name,выдаем сообщение.
echo '<div class="forma"><b>Не удалось получить записи DNS</b></div>';
echo '<div class="error_messages"><form action="../index.php"><button class="button" type="submit">Главная</button></form></div>';
//echo $format1."Failed to getRRrecords".$format2;
//echo "Error name:".$getrrrecord->status->name."<br>Error message:".$getrrrecord->status->message;
logout();
exit();
}
else
{
/* //Успешно получили список записей с SOAP-сервера.
echo "<form><table class='info'><tr><td><h1>Существующие записи в доменном имени <span class='dell_name'>$namedomain.</span></h1></td></tr><tr><td><table class='info_2'><tr><td>N</td><td>ID</td><td class='owner'>Имя записи</td><td>Действие</td><td>Тип записи</td><td>Приоритет</td><td>Вес</td>
<td>Порт</td><td>Значение</td><!--td>Алгоритм</td><td>Приведение типа</td><td>Комментарий</td--></tr>";
foreach($getrrrecord->data as $key =>$record)
{
Это было в php echo"<tr><td>".($key+1)."</td>
<td class='id'>".$record->id."</td>
<td class='owner'>".$record->owner."</td>
<td><button title='Удалить' id='".$record->id."' class='delete_btn'><img src='../images/delete_2.png' alt='Удаление' style='vertical-align:middle'> Удалить</button></td>
<td class='type_record'>".$record->type_record."</td>
<td class='pri'>".$record->pri."</td>
<td class='weight'>".$record->weight."</td>
<td class='port'>".$record->port."</td>
<td class='td_value'>".$record->data."</td>
<!--td class='sshfp_algorithm'>".$record->sshfp_algorithm."</td>
<td class='sshfp_type'>".$record->sshfp_type."</td>
<td class='info_rec'>".$record->info."</td--></tr>";
}
echo '</table></td></tr></table></form>';
*/
$response = [];
foreach($getrrrecord->data as $key =>$record)
array_push($response, [
'n' => ($key+1),
'id' => $record->id,
'owner' => $record->owner,
'type_record' => $record->type_record,
'pri' => $record->pri,
'weight' => $record->weight,
'port' => $record->port,
'data' => $record->data
]);
echo json_encode($response);
}
}
?>
Ошибка в коде обработчика, файл не грузится 500 internal server
Подскажите в чем у меня ошибка?
|
|

02.02.2018, 12:33
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
dataType: " json"
и
echo ' <div class="forma">Не удалось получить записи DNS</b></div>';
уже не правильно.
http://php.net/manual/ru/language.exceptions.php
Последний раз редактировалось laimas, 02.02.2018 в 12:46.
|
|

02.02.2018, 13:07
|
Аспирант
|
|
Регистрация: 27.09.2015
Сообщений: 94
|
|
Сообщение от laimas
|
dataType: "json"
и
echo '<div class="forma">Не удалось получить записи DNS</b></div>';
|
Хорошо echo Я все отключил, но причем dataType: "json",
Он же принимает с обработчика массив в формате json
Я так понимаю.
|
|

02.02.2018, 13:17
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Если отбросить в сторону обработку исключений, которую вы не понимаете и что у вас написано, это полный швах, то ваш диалог сервер-клиент кроме ошибок на клиенте при ошибках на сервере ничего не дает.
dataType: "json" - это не принимает, это определяет сценарию, что данные от сервера будут в формате JSON. Поэтому, приняв их, клиент будет их декодировать.
Но при возникновении ошибок на сервере вы отдаете не JSON, а HTML. Вопрос - что при этом будет на клиенте, который будет пытаться декодировать HTML как JSON?
|
|

02.02.2018, 13:58
|
Аспирант
|
|
Регистрация: 27.09.2015
Сообщений: 94
|
|
Сообщение от laimas
|
диалог сервер-клиент кроме ошибок на клиенте при ошибках на сервере ничего не дает.
|
Если обработчик написать так
<?
//ini_set('display_errors',1);
if(isset($_POST['domain']))
{
include '../reg/soap_action_getrrrecords.php'; //Подключение по API к SOAP-сервер
//вызываем функцию получения списка RR записей подомену
$getrrrecord = $client->getRrRecords($_POST['domain']);
$response = [];
foreach($getrrrecord->data as $key =>$record)
array_push($response, [
'n' => ($key+1),
'id' => $record->id,
'owner' => $record->owner,
'type_record' => $record->type_record,
'pri' => $record->pri,
'weight' => $record->weight,
'port' => $record->port,
'data' => $record->data
]);
echo json_encode($response);
}
}
?>
|
|

02.02.2018, 14:09
|
 |
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,279
|
|
Сообщение от olegalimov
|
как отправить из Ajax одну переменную а именно имя домена и получить ответ в Ajax виде массива
|
Нужно "бить" ПХПистов их же оружием!
Вот тебе пример на CSP.
Файл tmp.csp
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='https://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
$(function(){
$('form').submit(function(){
var domain = $('#out_domain').val();
$.ajax({
type: "POST",
cache: false,
url: "tmp1.csp",
data: {domain: domain},
success: function(data){
alert( "Прибыли данные: " + data );
}
});
return false;
});
});
</script>
</head>
<body>
<form method="post">
<table>
<tr>
<td>Домен:</td>
<td>
<input id="out_domain" type="text" name="domain" value="juntik.ru">
</td>
</tr>
</table>
<div class="button_records">
<input type="submit" name="getRrRecords" value="Получить записи" />
</div>
</form>
</body>
</html>
Файл tmp1.csp
[
<script language='cache' runat='server'>
s str="Первый,Второй,Третий,Четвертый"
s dlm=""
for i=1:1:$l(str,",") {
&html<#(dlm)#"#($p(str,",",i))#">
s dlm=","
}
</script>
]
|
|

02.02.2018, 14:25
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от ksa
|
Нужно "бить" ПХПистов их же оружием!
Вот тебе пример на CSP.
|
Если не знать языка, то и на Бейсике можно ляпов наделать.
|
|

02.02.2018, 14:27
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от olegalimov
|
Если обработчик написать так
|
А если вывести на экран без всякого Ajax, то что возвращает SOAP ($getrrrecord), можно будет получить ответ нужен ли вообще цикл?
|
|

02.02.2018, 15:35
|
 |
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,279
|
|
Сообщение от laimas
|
Если не знать языка
|
Дело в том, что ПХПисты постоянно выкладывают свои коды, как будто это тот самый Бейсик, который всем понятен.
Вместо ХТМЛ-примера, выкладывают свои программки, которые его как-то формируют...
|
|

02.02.2018, 15:48
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от ksa
|
Дело в том, что ПХПисты постоянно выкладывают свои коды
|
Ну так у него проблемы как раз с серверным кодом связаны. Это когда вместо html необходимого вываливают код сервера, тогда да, хуже некуда. )
|
|
|
|